<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script type="module">
import {callWithKeyDown, share_test} from './resources/share-test.js';
import {ShareError} from '/gen/third_party/blink/public/mojom/webshare/share_error.mojom.m.js';

function getAbsoluteUrl(url) {
  return new URL(url, document.baseURI).toString();
}

share_test(mock => {
  mock.pushShareResult('true', 'the object', 'http://example.com/',
                       ShareError.OK);

  const textWithToString = {toString() { return 'the object'; }};
  const urlWithToString = {toString() { return 'http://example.com/'; }};
  return callWithKeyDown(() => navigator.share(
        {title: true, text: textWithToString, url: urlWithToString}));
}, 'share of types other than string (expect implicitly converted to string)');

share_test(mock => {
  // null fields should convert into the string 'null' (because the field is
  // not nullable, it just converts to a string like any other type).
  mock.pushShareResult('null', '', '', ShareError.OK);
  return callWithKeyDown(() => navigator.share(
        {title: null, text: undefined}));
}, 'share of null/undefined dict values');

</script>
